/**
 * 登录页面脚本
 * 负责用户登录验证和相关功能
 */

// 页面加载完成后初始化
document.addEventListener('DOMContentLoaded', function () {
    console.log('登录页面初始化');
    // alert(window.UserManager.isUserLoggedIn())

    // 如果已经登录，直接跳转到首页
    // if (window.UserManager.isUserLoggedIn()) {
    //     window.location.href = 'index.html';
    //     return;
    // }
});

// 加载保存的主题
function loadSavedTheme() {
    try {
        // 从本地存储获取主题（先检查新的键名，再检查旧的键名）
        let theme = localStorage.getItem('preferredTheme');
        if (!theme) {
            theme = localStorage.getItem('theme');
        }

        // 如果没有保存的主题，使用默认主题
        if (!theme) {
            theme = 'default';
        }

        console.log('加载保存的主题:', theme);

        // 应用主题
        applyTheme(theme);
    } catch (e) {
        console.error('加载主题失败:', e);
    }
}

// 应用主题
function applyTheme(theme) {
    // 获取 body 元素
    const body = document.getElementById('theme-body') || document.body;

    // 移除所有主题类
    body.classList.remove(
        'theme-default',
        'theme-green',
        'theme-purple',
        'theme-orange',
        'theme-dark'
    );

    // 添加新主题类
    if (theme !== 'default') {
        body.classList.add(`theme-${theme}`);
    }

    // 更新document的主题数据属性，方便其他组件检测
    document.documentElement.setAttribute('data-theme', theme);
}

// 初始化登录页面
function initLoginPage() {
    // 绑定登录按钮点击事件
    const loginBtn = document.getElementById('login-btn');
    if (loginBtn) {
        loginBtn.addEventListener('click', handleLogin);
    }

    // 绑定输入框回车事件
    const usernameInput = document.getElementById('username');
    const passwordInput = document.getElementById('password');

    if (usernameInput) {
        usernameInput.addEventListener('keypress', function (e) {
            if (e.key === 'Enter') {
                passwordInput.focus();
            }
        });
    }

    // if (passwordInput) {
    //     passwordInput.addEventListener('keypress', function (e) {
    //         if (e.key === 'Enter') {
    //             handleLogin();
    //         }
    //     });
    // }

    // 检查是否有保存的用户名
    checkSavedUsername();

    // 绑定记住我复选框事件
    const rememberMeCheckbox = document.getElementById('remember-me');
    if (rememberMeCheckbox) {
        rememberMeCheckbox.addEventListener('change', function () {
            if (!this.checked) {
                // 如果取消勾选，则清除保存的用户名
                localStorage.removeItem('rememberedUsername');
            }
        });
    }

    // 初始化密码显示/隐藏切换功能
    initPasswordToggle();

    // 添加登录表单动画效果
    addLoginFormAnimations();
}

// 初始化密码显示/隐藏切换功能
function initPasswordToggle() {
    const passwordToggle = document.getElementById('password-toggle');
    const passwordInput = document.getElementById('password');

    if (passwordToggle && passwordInput) {
        passwordToggle.addEventListener('click', function () {
            if (passwordInput.type === 'password') {
                passwordInput.type = 'text';
                passwordToggle.classList.remove('layui-icon-eye');
                passwordToggle.classList.add('layui-icon-eye-invisible');
            } else {
                passwordInput.type = 'password';
                passwordToggle.classList.remove('layui-icon-eye-invisible');
                passwordToggle.classList.add('layui-icon-eye');
            }
        });
    }
}


// 添加登录表单动画效果
function addLoginFormAnimations() {
    const inputs = document.querySelectorAll('.login-input');

    inputs.forEach(input => {
        input.addEventListener('focus', function () {
            this.parentElement.classList.add('focused');
        });

        input.addEventListener('blur', function () {
            if (!this.value) {
                this.parentElement.classList.remove('focused');
            }
        });
    });
}

// 处理登录
function handleLogin() {
    // 获取输入值
    const username = document.getElementById('username').value.trim();
    const password = document.getElementById('password').value.trim();
    const rememberMe = document.getElementById('remember-me').checked;

    // 简单验证
    if (!username || !password) {
        showLoginError('请输入用户名和密码');
        return;
    }

    // 显示登录中状态
    const loginBtn = document.getElementById('login-btn');
    const originalBtnText = loginBtn.innerHTML;
    loginBtn.disabled = true;
    loginBtn.innerHTML = '<span class="loading"></span>登录中...';

    // 调用登录API
    login(username, password)
        .then(success => {
            if (success) {
                // 如果勾选了记住我，保存用户名
                if (rememberMe) {
                    localStorage.setItem('rememberedUsername', username);
                } else {
                    localStorage.removeItem('rememberedUsername');
                }
                // 登录成功，跳转到首页
                window.location.href = '../page/index.html';
            } else {
                // 恢复按钮状态
                loginBtn.disabled = false;
                loginBtn.innerHTML = originalBtnText;
            }
        })
        .catch(error => {
            console.error('登录失败:', error);
            showLoginError('登录失败，请稍后重试');

            // 恢复按钮状态
            loginBtn.disabled = false;
            loginBtn.innerHTML = originalBtnText;
        });
}

// 登录API调用
async function login(username, password) {
    try {
        // 检查是否使用模拟数据
        if (shouldUseMockData()) {
            console.warn('使用模拟数据模式');
            // 使用MockUserData模块验证登录
            const result = window.MockUserData.login(username, password);
            if (result.success) {
                // 登录成功，保存用户信息
                window.UserManager.setCurrentUser(result.user);
                return true;
            } else {
                // 登录失败，显示错误信息
                showLoginError(result.message || '用户名或密码错误');
                return false;
            }
        }

        // 使用统一的Android接口调用方式
        const response = await callAndroidMethodAsync('login', {
            username: username,
            password: password
        });

        if (response.success && response.data) {
            // 解析返回的数据
            const userData = response.data;

            // 使用UserManager保存用户信息
            window.UserManager.setCurrentUser(userData);
            return true;
        } else {
            // API调用失败
            showLoginError(response.message || '登录验证失败');
            return false;
        }
    } catch (error) {
        console.error('登录验证失败:', error);
        showLoginError('登录验证失败: ' + error.message);
        return false;
    }
}

// 检查是否有保存的用户名
function checkSavedUsername() {
    const rememberedUsername = localStorage.getItem('rememberedUsername');
    if (rememberedUsername) {
        // 填充用户名
        const usernameInput = document.getElementById('username');
        if (usernameInput) {
            usernameInput.value = rememberedUsername;
        }

        // 勾选记住我
        const rememberMeCheckbox = document.getElementById('remember-me');
        if (rememberMeCheckbox) {
            rememberMeCheckbox.checked = true;
        }

        // 聚焦到密码输入框
        const passwordInput = document.getElementById('password');
        if (passwordInput) {
            passwordInput.focus();
        }
    }
}

// 显示错误信息
function showLoginError(message) {
    const errorMessage = document.getElementById('error-message');
    if (errorMessage) {
        errorMessage.textContent = message;
        errorMessage.classList.add('show');

        // 5秒后自动隐藏
        setTimeout(() => {
            errorMessage.classList.remove('show');
        }, 3000);
    } else {
        // 如果找不到错误消息元素，使用toast提示
        window.showToast(message, 'error');
    }
}
